package com.zmn.plat.persistence.interfaces.part;


import com.zmn.common.dto.StatusDTO;
import com.zmn.common.dto.VtDTO;
import com.zmn.plat.model.entity.part.PartCategory;
import com.zmn.plat.model.entity.part.PartCategoryQuery;

import java.util.List;

/**
 * 类描述： PartCategoryDAO
 *
 * @author DaiZhichao
 * @since 2018/10/18 10:50
 */
public interface PartCategoryDAO {

    /**
     * 描述: 根据 id 查询配件
     *
     * @param categId
     * @return PartCategory
     * @author DaiZhichao
     * @since 2018/10/18 10:58
     */
    PartCategory findByKey(Integer categId);

    /**
     * 描述: 根据 query 查询配件分类
     *
     * @param query
     * @return List<PartCategory>
     * @author DaiZhichao
     * @since 2018/10/18 10:56
     */
    List<PartCategory> listPageByQuery(PartCategoryQuery query);

    /**
     * 描述: 根据 query 查询配件分类
     *
     * @param query
     * @return List<PartCategory>
     * @author DaiZhichao
     * @since 2018/10/18 10:56
     */
    List<PartCategory> listByQuery(PartCategoryQuery query);

    /**
     * 描述: 根据 query 查询配件简单列表
     *
     * @param query PartCategoryQuery
     * @return List<VtDTO>
     * @author DaiZhichao
     * @since 2018/11/08 19:01
     */
    List<VtDTO> listVtDTOByQuery(PartCategoryQuery query);

    /**
     * 描述: 根据 query 查询配件类型条数
     *
     * @param query
     * @return Integer
     * @author DaiZhichao
     * @since 2018/10/20 9:40
     */
    Integer countByQuery(PartCategoryQuery query);

    /**
     * 描述: 根据categId修改配件
     *
     * @param record
     * @return PartCategory
     * @author DaiZhichao
     * @since 2018/10/18 10:59
     */
    Integer updateByKey(PartCategory record);

    /**
     * 描述:
     *
     * @param record
     * @return PartCategory
     * @author DaiZhichao
     * @since 2018/10/18 10:59
     */
    Integer updateStatus(PartCategory record);

    /**
     * 描述:
     *
     * @param dto
     * @return PartCategory
     * @author DaiZhichao
     * @since 2018/10/18 10:59
     */
    Integer updateStatusBatch(StatusDTO dto);


    /**
     * 描述:更新排序
     *
     * @param record
     * @return PartCategory
     * @author DaiZhichao
     * @since 2018/10/20 9:43
     */
    Integer updateSort(PartCategory record);


    /**
     * 描述: 新增配件
     *
     * @param record
     * @return Intger
     * @author DaiZhichao
     * @since 2018/10/18 10:55
     */
    Integer insert(PartCategory record);

    /**
     * 描述: 根据categId删除
     *
     * @param categId
     * @return Integer
     * @author DaiZhichao
     * @since 2018/10/18 10:54
     */
    Integer deleteByKey(Integer categId);
}